#include "..\CookHeader.h"

typedef struct _Node {
	string data[2]; // ̸, Ű
	struct _Node* link = NULL;
} Node2;

Array <Node2*> memory;
Node2* head, * current, * pre;
Array <Array <string>> dataArray = { {"", "180"}, {"", "177"},
			{"", "183"}, {"", "175"}, {"", "179"} };

void printNodes2(Node2* start) {
	if (start == NULL)
		return;
	Node2* current = start;
	print("[" + current->data[0] + "," + current->data[1] + "]");
	while (current->link != NULL) {
		current = current->link;
		print("[" + current->data[0] + "," + current->data[1] + "]");
	}
	println("");
}

void freeMemory() { // Ҵ   ޸𸮸 Ѵ.
	for (int i = 0; i < len(memory); i++)
		delete memory[i];
}

void makeSimpleLInkedList(Array <string> nameHeight) {
	printNodes2(head);

	Node2* node;
	node = new Node2;
	node->data[0] = nameHeight[0];	// ̸
	node->data[1] = nameHeight[1];	// Ű
	memory.push_back(node);
	if (head == NULL) {				// ù °  
		head = node;
		return;
	}
	if (stoi(head->data[1]) > stoi(nameHeight[1])) {	// ù ° 庸  
		node->link = head;
		head = node;
		return;
	}
	// ߰  ϴ 
	current = head;
	while (current->link != NULL) {
		pre = current;
		current = current->link;
		if (stoi(current->data[1]) > stoi(nameHeight[1])) {
			pre->link = node;
			node->link = current;
			return;
		}
	}
	// ϴ 尡  ū 
	current->link = node;
}

int main() {
	for (int i = 0; i < len(dataArray); i++) {
		makeSimpleLInkedList(dataArray[i]);
	}
	printNodes2(head);

	freeMemory();
}